package mapEditor.model
{
	import flash.events.EventDispatcher;
	import flash.geom.Point;
	
	import mapEditor.events.MapEditorEvent;
	import mapEditor.view.MapAssetBase;
	import mapEditor.vo.MapAssetVO;
	import mapEditor.vo.MapVO;

	public class EditorModel extends EventDispatcher
	{
		private var _isNewMap:Boolean;//是否为新创建的地图
		private var _mapFilePath:String;//地图xml文件地址
		private var _mapVO:MapVO=new MapVO();
		private var _toolType:String;
//		private var _keyCodes:Array=[];
		private var _assetName:String;
		private var _assetLink:String;
		private var _assetClassType:String;
		private var _assetIsGrid:Boolean;
		private var _assetIsBottom:Boolean;
		private var _assetIsFloor:Boolean;
		private var _assetIsMirror:Boolean;
		private var _assetPoint:Point;
		private var _mouseAssetLink:String;
		private var _panelType:String;
		
		public function EditorModel()
		{
		}
		
		/**
		 *地图数据对象 
		 */		
		public function get mapVO():MapVO
		{
			return _mapVO;
		}

		/**
		 *地图数据对象 
		 */
		public function set mapVO(value:MapVO):void
		{
			_mapVO = value;
		}

		/**
		 *当前使用工具类型
		 */		
		public function get toolType():String
		{
			return _toolType;
		}
		
		/**
		 *当前使用工具类型
		 */		
		public function set toolType(value:String):void
		{
			_toolType = value;
			dispatchEvent(new MapEditorEvent(MapEditorEvent.TOOL_TYPE_CHANGE, _toolType));
		}

//		/**
//		 *当前场景的按键值集合 
//		 */		
//		public function get keyCodes():Array
//		{
//			return _keyCodes;
//		}
//
//		/**
//		 *当前场景的按键值集合 
//		 */
//		public function set keyCodes(value:Array):void
//		{
//			_keyCodes = value;
//		}

		/**
		 *地图组合资源类链接地址 
		 */
		public function get assetLink():String
		{
			return _assetLink;
		}

		/**
		 *地图组合资源类链接地址 
		 */
		public function set assetLink(value:String):void
		{
			_assetLink = value;
			dispatchEvent(new MapEditorEvent(MapEditorEvent.MAP_ASSET_ACTION_ITEM_CHANGE));
		}

		/**
		 *地图组合资源类对象类型
		 */		
		public function get assetClassType():String
		{
			return _assetClassType;
		}

		/**
		 *地图组合资源类对象类型
		 */
		public function set assetClassType(value:String):void
		{
			_assetClassType = value;
		}

		/**
		 *地图组合资源类对象是否贴近地图格子
		 */		
		public function get assetIsGrid():Boolean
		{
			return _assetIsGrid;
		}

		/**
		 * 地图组合资源类对象是否贴近地图格子
		 */		
		public function set assetIsGrid(value:Boolean):void
		{
			_assetIsGrid = value;
			dispatchEvent(new MapEditorEvent(MapEditorEvent.MAP_ASSET_GRID, _assetIsGrid));
		}

		/**
		 *地图组合资源类对象物件名称
		 */
		public function get assetName():String
		{
			return _assetName;
		}

		/**
		 *地图组合资源类对象物件名称
		 */
		public function set assetName(value:String):void
		{
			_assetName = value;
		}

		/**
		 *地图组合资源类对象物件置底
		 */	
		public function get assetIsBottom():Boolean
		{
			return _assetIsBottom;
		}

		/**
		 *地图组合资源类对象物件置底
		 */	
		public function set assetIsBottom(value:Boolean):void
		{
			_assetIsBottom = value;
			dispatchEvent(new MapEditorEvent(MapEditorEvent.MAP_ASSET_BOTTOM, _assetIsBottom));
		}

		/**
		 *为地表层(将会所属地表层物件拼合，同时其上是可被行走的) 
		 */	
		public function get assetIsFloor():Boolean
		{
			return _assetIsFloor;
		}

		/**
		 *为地表层(将会所属地表层物件拼合，同时其上是可被行走的) 
		 */	
		public function set assetIsFloor(value:Boolean):void
		{
			_assetIsFloor = value;
			dispatchEvent(new MapEditorEvent(MapEditorEvent.MAP_ASSET_FLOOR, _assetIsFloor));
		}

		/**
		 *当前鼠标跟随资源 
		 */
		public function get mouseAssetLink():String
		{
			return _mouseAssetLink;
		}

		/**
		 *当前鼠标跟随资源 
		 */
		public function set mouseAssetLink(value:String):void
		{
			_mouseAssetLink = value;
			dispatchEvent(new MapEditorEvent(MapEditorEvent.MOUSE_ASSET_CHANGE));
		}

		/**
		 *操作面板类型 
		 */
		public function get panelType():String
		{
			return _panelType;
		}

		/**
		 *操作面板类型 
		 */
		public function set panelType(value:String):void
		{
			_panelType = value;
			dispatchEvent(new MapEditorEvent(MapEditorEvent.PANEL_TYPE_CHANGE, _panelType));
		}

		/**
		 *当前编辑的是否是新建的地图(如果是新建的地图，在执行保存后，将会将当前值设置为flase)
		 */		
		public function get isNewMap():Boolean
		{
			return _isNewMap;
		}

		/**
		 *当前编辑的是否是新建的地图(如果是新建的地图，在执行保存后，将会将当前值设置为flase)
		 */
		public function set isNewMap(value:Boolean):void
		{
			_isNewMap = value;
		}

		/**
		 *打开已有的地图文件的路径(如果是新建的地图，在执行了保存操作后，此路径也将是正在编辑的地图的文件路径)
		 */	
		public function get mapFilePath():String
		{
			return _mapFilePath;
		}

		/**
		 *打开已有的地图文件的路径(如果是新建的地图，在执行了保存操作后，此路径也将是正在编辑的地图的文件路径)
		 */	
		public function set mapFilePath(value:String):void
		{
			_mapFilePath = value;
		}

		/**
		 *物件是否镜像
		 */		
		public function get assetIsMirror():Boolean
		{
			return _assetIsMirror;
		}

		/**
		 *物件是否镜像
		 */	
		public function set assetIsMirror(value:Boolean):void
		{
			_assetIsMirror = value;
			dispatchEvent(new MapEditorEvent(MapEditorEvent.MAP_ASSET_MIRROR, _assetIsMirror));
		}

		public function get assetPoint():Point
		{
			return _assetPoint;
		}

		public function set assetPoint(value:Point):void
		{
			_assetPoint = value;
		}

	}
}